Redshift Data APIの特徴を整理してみた。
はじめに
好物はインフラとフロントエンドのかじわらゆたかです。
Redshift向けのData APIですが、非常に便利な機能です。 今までRedshiftのデータに対して任意でクエリを書けるためには、Redshiftまでの通信経路を確保する必要がありましたが、そういったことが不要になる機能となります。
そんな便利なRedshift Data APIですが、APIって名称で勘違いされているところもあるかなって思ったので、そこらへんをすこし整理してみたいと思います。
REST APIではありません
APIって名がついているのもあり、REST APIのことを想像する方もいるかもしれんませんが、そのような仕組みではありません。 なので、指定のエンドポイントに対してはアクセスして、Redshiftに格納されたレコードのレスポンスが返ってくるわけではありません。
各種プログラミング言語とAWS SDKを用いた実装が必要です。
エンドポイントにリクエストをするのですが、こちらはAWSのAPIのアクセスの作法に則って行う必要があります。
やらなきゃいけない作業については上記のリンクで見ていただければわかるのですが、これを手動でやるのは非常に煩雑な作業となります。
そのため、Redshift DataAPIを用いるためには基本SDKを用いた実装が基本となります。
レスポンスサイズが100MB までという制限があります。
Redshift DataAPIはレスポンスサイズが100Mまでという制限があります。 他にも制限事項はありますが、一番影響度がある制限が上記かと思われます。 投げたクエリのレスポンスサイズが100MB超えそうな場合はS3にUnloadするなどの対策が必要です。
クエリのリクエストのレスポンスにレコードの結果が返ってくるわけではありません。
Redshift DataAPIは非同期で動く仕組みとなります。Redshift Data APIにクエリを投げると、その結果のレスポンスにはAPIの実行に対するレスポンスとなります。クエリの結果を取得するためには別途結果の取得を行う必要があります。
Redshiftと異なるVPCや異なるアカウントからも呼び出すことが可能です。
Redshift DataAPIはRedshiftに対してJDBC等でつないでクエリを投げる仕組みとは異なるため、 Redshiftと異なるVPCや異なるアカウントからも呼び出すことが可能です。 そのため、Redshiftに対してData APIを実行可能なIAM RoleやIAM Userを払い出してもらうことで、実行することが可能です。
まとめ
Redshift Data API ですが名称で勘違いされそうなことをまとめてみました。Redshift Data APIは非常に便利な機能ですので、挙動を把握したうえで適切に使えればと思います。